import os #导入操作系统相关功能的函数，主要是使用读写来读取文件信息
import tensorflow as tf #调用tensorflow模块
from PIL import Image #从图像处理库中导入Image模块来对80张图片进行处理

'''存储图片路径'''
Pic_Path = 'D:/大学工作/网络开放源码体系/MyProject/zhenjiakankankan/Shoes_Check/AJ_Picture/'

classes = {'AJ1','AJ4','AJ11'} #用来实现数据的读取，四个文件夹的命名

'''创建一个TFRecordes文件用来写入'''
'''其文件是二进制进行存储的，将数据写如进文件'''

tfrecord_in = tf.compat.v1.python_io.TFRecordWriter("AJshoes_For_train.tfrecords")#创建一个tfrecords格式的文件

for index, name  in enumerate(classes): #使用索引序列的方式进行循环，0- AJ1, 1-AJ4 ……
    class_AJ_Path = Pic_Path + name + '/' #构建每组AJ鞋类的路径
    for img_name in os.listdir(class_AJ_Path):#通过os模块中的listdirL来返回对应鞋类下的文件的名字的列表，是以字母顺序
        each_image_path = class_AJ_Path + img_name #用来存储每一个图片的路径
        image = Image.open(each_image_path) #存放每一个球鞋图片
        image = image.resize((64,64))#设置图片需要转化的大小，因为一般大小为8*8，64个像素
        binary_image = image.tobytes()#将图片转化为二进制格式

        '''将图像数据（像素值和标签）写入协议换缓存区'''
        example = tf.train.Example(features=tf.train.Features(feature={
            "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),
            'binary_image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[binary_image]))
        }))
        tfrecord_in.write(example.SerializeToString())

tfrecord_in.close()
